# 1. 房子(House) 有 户型、总面积 和 家具名称列表 – 新房子没有任何的家具
# 2. 家具(HouseItem) 有 名字 和 占地面积，其中
# – 席梦思(bed) 占地 4 平米 – 衣柜(chest) 占地 2 平米 – 餐桌(table) 占地 1.5 平米
# 3. 将以上三件 家具 添加 到 房子 中
# 4. 打印房子时，要求输出：户型、总面积、剩余面积、家具名称列表

class HouseItem(object):
    """家具类"""

    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        """自定义对象信息"""
        return f"{self.name}占地{self.area}平米"


# 创建对象
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)


class House(object):
    """房子类"""

    def __init__(self, house_type, total_area, ):
        self.house_type = house_type
        self.total_area = total_area
        self.item_list = []  # 房子对象创建时,家具列表默认是空的
        self.free_area = total_area  # 房子对象创建时,剩余面积默认就是总面积

    def add_item(self, item):
        """添加家具"""
        # 判断家具是否能添加
        if self.free_area > item.area:
            # 添加家具后的表现 -> 剩余面积,家具列表
            self.free_area -= item.area
            self.item_list.append(item.name)
        else:
            print("家具面积过大,无法添加成功")

    def __str__(self):
        """自定义房子对象"""
        return f"户型:{self.house_type}," \
               f"总面积:{self.total_area}," \
               f"剩余面积:{self.free_area}," \
               f"家具列表:{self.item_list}"


# 创建对象
h1 = House("别墅", 100)
h1.add_item(bed)
print(h1)
h1.add_item(chest)
h1.add_item(table)
print(h1)
